package com.travel.modules.sys.entity;

import java.io.Serializable;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.travel.commons.validator.groups.AddGroup;
import com.travel.commons.validator.groups.UpdateGroup;
import lombok.Data;
import org.springframework.jdbc.object.UpdatableSqlQuery;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 用户
 * @TableName SYS_USER
 *
 * @author pengrui.r@qq.com
 */
@Data
@TableName("sys_user")
public class SysUser implements Serializable {
    /**
     * 用户ID
     */
    @TableId
    private Integer id;

    /**
     * 用户名
     */
    @NotBlank(message = "姓名不能为空", groups = {UpdateGroup.class})
    private String username;

    /**
     * 登录名
     */
    private String loginName;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String password;

    /**
     * 盐
     */
    @NotBlank(message = "盐不能为空", groups = { UpdateGroup.class})
    private String salt;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 手机
     */
    @NotBlank(message = "手机号不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String mobile;

    /**
     * 状态  0：禁用   1：正常
     */
    private Integer status;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 头像
     */
    private String headUrl;

    /**
     * 简介
     */
    private String introduce;

    /**
     * 账号锁定到期时间
     */
    private Date pwLockDate;

    /**
     * 密码第一次输错时间
     */
    private Date pwErrorDate;

    /**
     * 是否需要重置密码（1-是，0否）
     */
    private Integer resetPw;

    /**
     * 时间段内密码输错次数
     */
    private Integer pwErrorNum;

    /**
     * 角色分类 系统管理员1，商家2，旅客3
     */
    @NotNull(message = "用户类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer roleId;

    /**
     * 身份证
     */
    private String idCard;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 性别
     */
    private String sex;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table SYS_USER
     */
    private static final long serialVersionUID = 1L;
}